package com.wyp168.leetcode;


public abstract class Palindrome {
    /**
     * 解题思路：
     *  使用双指针的形式进行判断，内嵌两个循环，判断跳过非字符和数字，然后进行判断
     */
    public void a () {
    }

    public int foo(int x, int y) {
        if (x <= 0 || y <= 0) {
            return 2;
        }
        return 3 * foo(x-6,y/2);
    }

    public static boolean isPalindrome (String s) {
        s = s.toLowerCase();
        char[] chars = s.toCharArray();
        int start = 0,end=chars.length - 1;

        while(start < end) {
            //跳过两个字符
            while(start < end && !Character.isLetterOrDigit(chars[start])) {
                start ++;
            }
            while(start < end && !Character.isLetterOrDigit(chars[end])) {
                end --;
            }
            //判断两个字符是否相等，如果不相等，直接返回false，如果相等，则继续判断，直到循环结束后返回true
            if(chars[start] != chars[end]) {
                return false;
            }
            start ++;
            end --;
        }
        return true;
    }
}
